/**
 * Copyright 2013 The FROG Brigade
 * 
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * 
 * http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package net.frogbrigade.bufonidae.data;

/**
 * 総務省が提供する『全国地方公共団体コード』のデータモデルです。
 * 
 * @author nobuyuki sekimori
 * @since 1.0.0
 * @version 1.0.0
 */
public class MunicipalityCodeData
{
    /**
     * 市区町村コードです。
     */
    private String municipalityCode     = null;

    /**
     * 都道府県名です。
     */
    private String prefectureName       = null;

    /**
     * 市区町村名です。
     */
    private String municipalityName     = null;

    /**
     * カナ都道府県名です。
     */
    private String kanaPrefectureName   = null;

    /**
     * カナ市区町村名です。
     */
    private String kanaMunicipalityName = null;

    /**
     * オブジェクトを生成します。
     */
    public MunicipalityCodeData()
    {
    }

    /**
     * 指定した『全国地方公共団体コード』のCSVレコードをオブジェクトにロードします。
     * 
     * @param record
     *            ロードする『全国地方公共団体コード』のCSVレコードです。
     * @throws IllegalArgumentException
     *             CSVレコードの内容が不正な場合に発生します。
     */
    public void loadFromCsvRecord(String[] record)
    {
        try
        {
            this.municipalityCode = record[0];
            this.prefectureName = record[1];
            this.municipalityName = record[2];
            this.kanaPrefectureName = record[3];
            this.kanaMunicipalityName = record[4];
        }
        catch (Exception ex)
        {
            throw new IllegalArgumentException("specified string array is not parsable.", ex);
        }
    }

    /**
     * 市区町村コードを取得します。
     * 
     * @return 市区町村コードです。
     */
    public String getMunicipalityCode()
    {
        return this.municipalityCode;
    }

    /**
     * 市区町村コードを設定します。
     * 
     * @param municipalityCode
     *            市区町村コードです。
     */
    public void setMunicipalityCode(String municipalityCode)
    {
        this.municipalityCode = municipalityCode;
    }

    /**
     * 都道府県名を取得します。
     * 
     * @return 都道府県名です。
     */
    public String getPrefectureName()
    {
        return this.prefectureName;
    }

    /**
     * 都道府県名を設定します。
     * 
     * @param prefectureName
     *            都道府県名です。
     */
    public void setPrefectureName(String prefectureName)
    {
        this.prefectureName = prefectureName;
    }

    /**
     * 市区町村名を取得します。
     * 
     * @return 市区町村名です。
     */
    public String getMunicipalityName()
    {
        return this.municipalityName;
    }

    /**
     * 市区町村名を設定します。
     * 
     * @param municipalityName
     *            市区町村名です。
     */
    public void setMunicipalityName(String municipalityName)
    {
        this.municipalityName = municipalityName;
    }

    /**
     * カナ都道府県名を取得します。
     * 
     * @return カナ都道府県名です。
     */
    public String getKanaPrefectureName()
    {
        return this.kanaPrefectureName;
    }

    /**
     * カナ都道府県名を設定します。
     * 
     * @param kanaPrefectureName
     *            カナ都道府県名です。
     */
    public void setKanaPrefectureName(String kanaPrefectureName)
    {
        this.kanaPrefectureName = kanaPrefectureName;
    }

    /**
     * カナ市区町村名を取得します。
     * 
     * @return カナ市区町村名です。
     */
    public String getKanaMunicipalityName()
    {
        return this.kanaMunicipalityName;
    }

    /**
     * カナ市区町村名を設定します。
     * 
     * @param kanaMunicipalityName
     *            カナ市区町村名です。
     */
    public void setKanaMunicipalityName(String kanaMunicipalityName)
    {
        this.kanaMunicipalityName = kanaMunicipalityName;
    }
}
